"use strict";
{
    // 函数声明
    function sum(x, y) {
        return x + y;
    }
    // 输入多余的（或者少于要求的）参数，是不被允许的：
    sum(1, 1);
    // 函数表达式
    let mySum = function (x, y) {
        return x + y;
    };
    // 在 TypeScript 的类型定义中，=> 用来表示函数的定义，左边是输入类型，需要用括号括起来，右边是输出类型。
    // let mySum: (x: number, y: number) => number = function (
    //   x: number,
    //   y: number
    // ): number {
    //   return x + y;
    // };
    // 可选参数
    // 可选参数必须接在必需参数后面。换句话说，可选参数后面不允许再出现必需参数了
    // function buildName(firstName: string, lastName?: string) {
    //   if (lastName) {
    //     return firstName + " " + lastName;
    //   } else {
    //     return firstName;
    //   }
    // }
    // let tomcat = buildName("Tom", "Cat");
    // let tom = buildName("Tom");
    // 参数默认值
    // 在 ES6 中，我们允许给函数的参数添加默认值，TypeScript 会将添加了默认值的参数识别为可选参数：
    function buildName(firstName, lastName = "Cat") {
        return firstName + " " + lastName;
    }
    let tomcat = buildName("Tom", "Cat");
    let tom = buildName("Tom");
    // 剩余参数 （rest 参数）
    function push(array, ...items) {
        items.forEach(function (item) {
            array.push(item);
        });
    }
    let a = [];
    push(a, 1, 2, 3);
}
